from django.shortcuts import render

# Create your views here.
from drf_haystack.viewsets import HaystackViewSet
from rest_framework.filters import OrderingFilter
from rest_framework.generics import ListAPIView

from goods import serializers
from goods.models import SKU
from goods.serializers import SKUIndexSerializer


class SKUListView(ListAPIView):
    """商品列表页后端实现
    1.根据分类id  因为序列化器的queryset要根据传进来的id查询数据 所以不能写死
        重写get_queryset方法以获取分类id以生成对应的查询集
      排序  分页
    2.使用序列化器返回
    3.排序  filter_backends=[ordering] ordering_fields=[]
    4.分页  自定义分页类   继承pagenumber类  在类中使用
    """
    serializer_class = serializers.SKUSerializer
    # 设置排序及按什么字段排序
    filter_backends = [OrderingFilter]
    ordering_fields = ['create_time', 'price', 'sales']

    # 分页  因为搜索数据列表和用户订单中都会用到分类  所以在全局中进行配置
    # pagination_class = MyPagination

    def get_queryset(self):
        # 查询字符串中的数据都会以键值对的格式保存在kwrgs中
        category_id = self.kwargs['category_id']
        # 返回符合条件根据分类id进行查询的查询集  将商品上架=true作为条件之一
        return SKU.objects.filter(category_id=category_id, is_launched=True)


class SearchViewSet(HaystackViewSet):
    """搜索框视图集  该视图会返回搜索结果的列表数据"""
    index_models = [SKU]
    serializer_class = SKUIndexSerializer

